//
//  main.m
//  Block的三种不同类型
//
//  Created by apple on 15/8/10.
//  Copyright (c) 2015年 戴维营. All rights reserved.
//

#import <Foundation/Foundation.h>

//BlockType test() {
//    int a = 0;
//    BlcokType b = ^{
//        NSLog(@"abc: %d",a);
//    };
//    return [b copy];
//}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       
        //就这普通情况下得到的block的对象，一般在文本段；
        void (^pro)() = ^{
            NSLog(@"你大爷的！！！");
        };
        NSLog(@"%@@",[pro class]);
        
        
        //如果block对象使用了局部变量，则分配在栈上，
        int a  = 123;
        void (^p)() = ^{
            NSLog(@"d",a);
        };
        NSLog(@"1:%@",[p class]);
        
        //对栈上面的block对象进行复制，它所产生的新对象在堆上分配；
        void (^pi)() = [p copy];
        NSLog(@"2:%@",[pi class]);
        
    
    }
    return 0;
}
